package com.atguigu.srb.core.service.impl;

import com.atguigu.srb.core.entity.TransFlow;
import com.atguigu.srb.core.entity.UserInfo;
import com.atguigu.srb.core.enums.TransTypeEnum;
import com.atguigu.srb.core.mapper.TransFlowMapper;
import com.atguigu.srb.core.service.TransFlowService;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;

/**
 * <p>
 * 交易流水表 服务实现类
 * </p>
 *
 * @author Atguigu
 * @since 2023-06-30
 */
@Service
public class TransFlowServiceImpl extends ServiceImpl<TransFlowMapper, TransFlow> implements TransFlowService {
    //提取方法,根据交易单号查询获取transFlow
    @Override
    public TransFlow getByTransNo(String agentBillNo) {
        return this.getOne(Wrappers.lambdaQuery(TransFlow.class).eq(TransFlow::getTransNo,agentBillNo));
    }

    /**
     *
     * @param amount 交易的金额
     * @param userInfo 交易人的信息
     * @param chargeNo 交易的编号
     * @param typeEnum 交易的类型
     * @param status 交易的类型
     */
    public void saveTransFlow(BigDecimal amount, UserInfo userInfo, String chargeNo, TransTypeEnum typeEnum, Integer status,String memo) {
        //需要保存交易的日志
        TransFlow transFlow = new TransFlow();
        //设置userId
        transFlow.setUserId(userInfo.getId());
        //设置用户姓名
        transFlow.setUserName(userInfo.getName());
        //设置交易编号 这个交易编号就是上面的changeNo
        transFlow.setTransNo(chargeNo);
        //设置交易类型为充值
        transFlow.setTransType(typeEnum.getTransType());
        //设置交易类型的名称
        transFlow.setTransTypeName(typeEnum.getTransTypeName());
        //设置交易的金额
        transFlow.setTransAmount(amount);
        //TODO 设置备注 这个地方的备注不在这里设置,等到callback里面收到hfb传回来的参数的时候,将参数toString之后再设置进去
        transFlow.setMemo(memo);
        //设置交易的状态
        transFlow.setStatus(status); //交易的状态 0为默认,未完成的意思  1是已完成
        this.save(transFlow);
    }

}
